package reflect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author DBX
 * @effect 注解是jdk5推出的一个新特性，可以辅助我们在反射机制中操作对象使用
 * java内置了很多注解，不同的注解也有不同的作用
 * 例如：@Override 重写
 * 注解的声明：
 * public @interface 注解名{
 *     参数类型 参数名();
 *     ...
 * }
 *
 * 使用注解语法：
 * @注解名
 * 如果注解定义了参数，可以在使用时传入参数
 * @注解名（实参...)
 *
 * 声明注解时有两个注解是用来注解标注信息的：
 * @Target：声明该注解用于标注的位置，例如：方法上，类上等等
 * @Retention：声明该注解保留级别
 *      可选取的值在枚举类型RetentionPolicy中定义，我们定义的注解通常只选取RUNTIME，这个级别表示该注解会被保留在编译器后的class文件
 *      中，并且可供反射机制获取及操作
 * @date 2021/09/16/9:08
 */
/*需要同时在多个地方使用该注解时，应当如下传参给Target @Target({ElementType.TYPE,ElementType.METHOD...})
*  这里的{}是数值的静态初始化，相当于传入一个数组，包含多个可标注位置*/
@Target(ElementType.TYPE)//仅在类上使用该注解
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {

}
